package com.spcmg.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.spcmg.entity.SpcRoom;
import com.spcmg.entity.SpcStation;
import com.spcmg.utils.JsonResult;
import com.spcmg.vo.StatStationRoomNumVO;

import java.util.Collection;
import java.util.List;

/**
 * <p>
 * 机房表 服务类
 * </p>
 *
 * @author admin
 * @since 2021-04-13
 */
public interface ISpcRoomService extends IService<SpcRoom> {

    /**
     * 增加机房
     *
     * @param chinaName       机房名
     * @param stationId       局站Id
     * @param address         机房地址
     * @param street          所属街道、乡镇
     * @param x               经度
     * @param y               纬度
     * @param area            建筑面积
     * @param usedArea        已用面积
     * @param toHireBack      可出租机架数
     * @param hiredRack       已出租机架数
     * @param length          长
     * @param width           宽
     * @param height          高
     * @param classId         机房等级
     * @param typeId          机房类型
     * @param roomTypeDetail  机房类型细类
     * @param startUseDate    投产时间
     * @param maintenanceUnit 维护单位
     * @param flag            是否基站机房 是（1）/否（0）
     * @param notes           备注
     * @return 返回数据
     */
    JsonResult insertRoom(String chinaName,
                          String stationId,
                          String address,
                          String street,
                          String x,
                          String y,
                          String area,
                          String usedArea,
                          Integer toHireBack,
                          Integer hiredRack,
                          String length,
                          String width,
                          String height,
                          Integer classId,
                          Integer typeId,
                          Integer roomTypeDetail,
                          String startUseDate,
                          String maintenanceUnit,
                          Integer flag,
                          String notes);

    /**
     * 批量保存机房、局站信息
     *
     * @param roomList
     * @param stationList
     */
    void saveBatchData(Collection<SpcRoom> roomList, Collection<SpcStation> stationList);

    /**
     * 批量保存机房信息
     *
     * @param spcRoomList
     * @return
     */
    int saveBatch(List<SpcRoom> spcRoomList);

    /**
     * 根据机房名称查询机房
     *
     * @param chinaName
     * @return
     */
    int selectCountByRoomChinaName(String chinaName);

    /**
     * 统计对应局站内所有“机房等级”内所有“机房类型”的机房数量
     *
     * @param stationId
     * @return
     */
    List<StatStationRoomNumVO> statStationRoomNum(Long stationId);

    /**
     * 根据条件查询机房
     *
     * @param type 查询类型 1=机房Id 2=等于机房名 3=模糊查询机房名 4=模糊查询所属局站名
     * @param condition 条件
     * @return
     * @throws Exception
     */
    JsonResult selectSpcRoom(Integer type, String condition) throws Exception;
}
